using System;
using System.Data.Entity;
using System.Threading;
using System.Threading.Tasks;
using FikriKibar.Entities.Concrete;

namespace FikriKibar.DataAccess.Abstract
{
    public interface IFikriKibarDbContext : IDisposable
    {
        IDbSet<Content> Contents { get; set; }
        IDbSet<ContentCategory> ContentCategories { get; set; }
        IDbSet<ContentCategoryHistory> ContentCategoryHistories { get; set; }
        IDbSet<ContentCategoryLanguageLine> ContentCategoryLanguageLines { get; set; }
        IDbSet<ContentCategoryLanguageLineHistory> ContentCategoryLanguageLineHistories { get; set; }
        IDbSet<ContentHistory> ContentHistories { get; set; }
        IDbSet<ContentLanguageLine> ContentLanguageLines { get; set; }
        IDbSet<ContentLanguageLineHistory> ContentLanguageLineHistories { get; set; }
        IDbSet<ContentType> ContentTypes { get; set; }
        IDbSet<ContentTypeHistory> ContentTypeHistories { get; set; }
        IDbSet<ContentTypeLanguageLine> ContentTypeLanguageLines { get; set; }
        IDbSet<ContentTypeLanguageLineHistory> ContentTypeLanguageLineHistories { get; set; }
        IDbSet<File> Files { get; set; }
        IDbSet<FileHistory> FileHistories { get; set; }
        IDbSet<Keyword> Keywords { get; set; }
        IDbSet<KeywordHistory> KeywordHistories { get; set; }

        IDbSet<Language> Languages { get; set; }
        IDbSet<LanguageHistory> LanguageHistories { get; set; }
        IDbSet<Menu> Menus { get; set; }
        IDbSet<MenuHistory> MenuHistories { get; set; }
        IDbSet<MenuItem> MenuItems { get; set; }
        IDbSet<MenuItemHistory> MenuItemHistories { get; set; }
        IDbSet<MenuItemLanguageLine> MenuItemLanguageLines { get; set; }
        IDbSet<MenuItemLanguageLineHistory> MenuItemLanguageLineHistories { get; set; }
        IDbSet<MenuLanguageLine> MenuLanguageLines { get; set; }
        IDbSet<MenuLanguageLineHistory> MenuLanguageLineHistories { get; set; }
        IDbSet<Role> Roles { get; set; }
        IDbSet<RoleHistory> RoleHistories { get; set; }
        IDbSet<RoleLanguageLine> RoleLanguageLines { get; set; }
        IDbSet<RoleLanguageLineHistory> RoleLanguageLineHistories { get; set; }
        IDbSet<Session> Sessions { get; set; }
        IDbSet<SessionHistory> SessionHistories { get; set; }
        IDbSet<Setting> Settings { get; set; }
        IDbSet<SettingHistory> SettingHistories { get; set; }
        IDbSet<SettingLanguageLine> SettingLanguageLines { get; set; }
        IDbSet<SettingLanguageLineHistory> SettingLanguageLineHistories { get; set; }
        IDbSet<User> Users { get; set; }
        IDbSet<UserGroup> UserGroups { get; set; }
        IDbSet<UserGroupHistory> UserGroupHistories { get; set; }
        IDbSet<UserGroupLanguageLine> UserGroupLanguageLines { get; set; }
        IDbSet<UserGroupLanguageLineHistory> UserGroupLanguageLineHistories { get; set; }
        IDbSet<UserGroupRoleLine> UserGroupRoleLines { get; set; }
        IDbSet<UserGroupRoleLineHistory> UserGroupRoleLineHistories { get; set; }
        IDbSet<UserGroupUserLine> UserGroupUserLines { get; set; }
        IDbSet<UserGroupUserLineHistory> UserGroupUserLineHistories { get; set; }
        int SaveChanges();
        Task<int> SaveChangesAsync();
        Task<int> SaveChangesAsync(CancellationToken cancellationToken);

    }

}
